/**
 * 路由配置 - 动态路由版本
 * 基础路由 + 动态路由（从后端获取）
 */
import { createRouter, createWebHistory } from 'vue-router'
import { createPermissionGuard } from './guards/permission'

/**
 * 基础路由（静态路由，不需要权限）
 * 这些路由在应用启动时就会加载
 */
const basicRoutes = [
  // 登录页
  {
    path: '/login',
    name: 'Login',
    component: () => import('@/views/login/index.vue'),
    meta: {
      title: '用户登录',
      requiresAuth: false,
      hideInMenu: true
    }
  },
  
  // 主布局容器（动态路由会添加到这里）
  {
    path: '/',
    name: 'Layout',
    component: () => import('@/layouts/UniversalLayout.vue'),
    redirect: '/dashboard',
    meta: {
      title: '主布局',
      requiresAuth: true
    },
    children: [
      // 重定向路由（用于刷新页面）
      {
        path: '/redirect/:path(.*)',
        name: 'Redirect',
        component: () => import('@/views/redirect/index.vue'),
        meta: {
          title: '重定向',
          hideInMenu: true
        }
      },
      // 动态路由会添加到这里
    ]
  },
  
  // 404 页面
  {
    path: '/404',
    name: 'NotFound',
    component: () => import('@/views/error/404.vue'),
    meta: {
      title: '页面不存在',
      hideInMenu: true
    }
  }
]

/**
 * 创建路由实例
 */
const router = createRouter({
  history: createWebHistory(),
  routes: basicRoutes,
  scrollBehavior: () => ({ left: 0, top: 0 })
})

/**
 * 重置路由
 * 用于用户登出时清空动态路由
 */
export function resetRouter() {
  const newRouter = createRouter({
    history: createWebHistory(),
    routes: basicRoutes
  })
  router.matcher = newRouter.matcher
}

/**
 * 初始化路由守卫
 */
createPermissionGuard(router)

export default router
